Design by Contract(契约式设计)是一种软件设计方法:把“调用者”和“被调用者”(例如函数/方法、模块、类)之间的责任写成明确的“契约”,通常包括前置条件(调用前必须满足)、后置条件(执行后必须保证)和不变式(始终保持为真)。用于提高可靠性、可维护性,并让错误更早暴露。
/dɪˈzaɪn baɪ ˈkɑːntrækt/
The function checks its preconditions before running.
该函数在运行前会检查它的前置条件。
By using design by contract, the team made each module’s responsibilities explicit and reduced hidden assumptions.
通过契约式设计,团队把每个模块的职责写得很明确,减少了隐含假设。
这个术语由软件工程领域推广开来,核心比喻来自现实中的“合同/契约(contract)”:双方在开始合作前先把各自义务写清楚。它在面向对象方法论中尤其常见,并与提出和系统化该思想的研究者与编程语言实践紧密相关(尤其是 Eiffel 社区)。